package br.unifor.ads.pjappfinanceiro.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import br.unifor.ads.pjappfinanceiro.entity.Caixa;

public class CaixaDAO {

	private EntityManager em = new EntityManager() {

		@Override
		public Object trataResultSet(ResultSet resultSet) throws SQLException {

			Caixa caixa = new Caixa();
			caixa.setId(resultSet.getInt("id_caixa"));
			caixa.setDtCaixa(resultSet.getDate("data_caixa"));
			caixa.setDocumento(resultSet.getString("doc_caixa"));
			caixa.setReferente(resultSet.getString("referente_caixa"));
			caixa.setTipo(resultSet.getString("tipo_caixa"));
			caixa.setValor(resultSet.getDouble("valor_caixa"));
			return caixa;
		}
	};

	public void salvar(Caixa caixa) throws SQLException {

		String sql = "insert into tb_caixa(data_caixa, "
				+ "doc_caixa, referente_caixa, tipo_caixa, valor_caixa) values (?, ?, ?, ?, ?)";
		em.executeQuery(sql, caixa.getDtCaixa(), caixa.getDocumento(),
				caixa.getReferente(), caixa.getTipo(), caixa.getValor());
	}

	public void atualizar(Caixa caixa) throws SQLException {

		String sql = "update tb_caixa set data_caixa = ?, "
				+ "doc_caixa = ?, referente_caixa = ?, tipo_caixa = ?, valor_caixa = ? where id_caixa = ?  ";
		em.executeQuery(sql, caixa.getDtCaixa(), caixa.getDocumento(),
				caixa.getReferente(), caixa.getTipo(), caixa.getValor(),
				caixa.getId());

	}

	public void excluirPorId(Integer id) throws SQLException {
		String sql = "delete from tb_caixa where id_caixa = ?";
		em.executeQuery(sql, id);
	}

	public void excluirTodos() throws SQLException {

		String sql = "delete from tb_caixa";
		em.executeQuery(sql);
	}

	public Caixa buscarPorId(Integer id) throws SQLException {

		String sql = "select id_caixa, data_caixa, "
				+ "doc_caixa, referente_caixa, tipo_caixa, valor_caixa from tb_caixa where id_caixa = ?";
		return (Caixa) em.getSingleResult(sql, id);
	}

	
	@SuppressWarnings("unchecked")
	public List<Caixa> buscarTodos() throws SQLException {
		String sql = "select id_caixa, data_caixa, "
				+ "doc_caixa, referente_caixa, tipo_caixa, valor_caixa from tb_caixa";
		return (List<Caixa>) em.getResultList(sql);
	}

}
